﻿#ifndef HEXBIN_H
#define HEXBIN_H

#include <QString>
#include <QByteArray>

class HexBin
{
public:
    static QByteArray parseHexString(const QString& str, bool* ok=nullptr);
    static QString hexFormat(const QByteArray& data);

    ///
    /// @brief 将输入的各种十六进制字符串格式转换为标准格式，如 "BE ED 01 03 4E"
    /// @param input 任意格式的字符串，例如 "0x12345", "BE,ED;1,3,4E", "\\xBE\\xED\\x01"
    /// @return 格式化后的字符串，每个字节两个字符，大写，空格分隔
    /// @throws std::invalid_argument 如果字符串中出现非法字符（非0-9a-fA-F）
    ///
    /// 支持的特性：
    /// ① 可识别并去除 "0x"、"0X"、"\\x"、"\\X" 等前缀
    /// ② 自动忽略空格、换行、逗号、分号、括号等分隔符
    /// ③ 自动补全偶数字节长度（例如 "123" -> "01 23"）
    /// ④ 检查非法字符（> F 的字母或其它语言字符）
    ///
    static QString normalizeHexString(const QString &input, bool* ok=nullptr);
};

#endif // HEXBIN_H
